/* 
 * File:   tabela_vagas.c
 * Author: Vagner Clementino
 *
 * Created on 7 de Abril de 2012, 19:21
 */

#include <stdlib.h>
#include <stdio.h>
#include "tabela_vagas.h"



 tabela_vagas* cria_tabela_vagas(int linhas, int colunas){
   
   int i;
   tabela_vagas* vagas = NULL;
   vagas = (tabela_vagas*) malloc(sizeof(tabela_vagas));
   
   vagas->linhas = linhas;
   vagas->colunas = colunas;
   
   vagas->dados = (int**) malloc(colunas*sizeof(int*));
   
   if(vagas->dados == NULL){
       fprintf(stderr,"Erro em alocar memoria\n");
       exit(-1);
   }
   
   for(i=0;i<linhas;i++){
       vagas->dados[i] = malloc(linhas*sizeof(int));
       if(vagas->dados[i] == NULL){
       fprintf(stderr,"Erro em alocar memoria\n");
       exit(-1);   
       }
   }
 }
 
 void define_tabela_vagas(tabela_vagas** vagas, 
                          const Lista_Universidade universidades){
     Nodo_Universidade* aux;
    
    if(esta_vazia(universidades)){
        printf("Lista vazia.\n");
        return;
    }else{
        aux = universidades->primeiro;
        while(aux != NULL){
            (*vagas)->dados[aux->u.id][0] = aux->u.id;
            (*vagas)->dados[aux->u.id][1] = aux->u.num_vagas;
            aux = (Nodo_Universidade*) aux->next;
        } 
    } 
 }
 
 void retira_vaga(int id_universidade,tabela_vagas** vagas, int qtde){
     if((*vagas) != NULL){
         (*vagas)->dados[id_universidade][1] -= qtde;
     }else{
         printf("Impossivel reduzir a quantidade de vagas\n");
     }
 }
 
 void aumenta_vaga(int id_universidade, tabela_vagas** vagas, int qtde){
     if((*vagas) != NULL){
         (*vagas)->dados[id_universidade][1] += qtde;
     }else{
         printf("Impossivel reduzir a quantidade de vagas\n");
     }
 }
 
 bool tem_vaga(int id_universidade, tabela_vagas* vagas){
     
     bool status_vaga = FALSO;
     
     if(vagas->dados[id_universidade][1] > 0){
         status_vaga = VERDADEIRO;
     }
     
     return (status_vaga);
     
     
 }
 
 void imprime_tabela_vagas(const tabela_vagas* vagas){
     int i,j;
     
     for(i=0;i<vagas->colunas;i++){
         for(j=0;j<vagas->linhas;j++){
             printf("%d ", vagas->dados[i][j]);
         }
         printf("\n");
     }
     
 }